const isJSON = (str: string) => {
    if (typeof str == 'string') {
        try {
            let obj = JSON.parse(str);
            if (typeof obj == 'object' && obj ) {
                return true
            } else {
                return false
            }
        } catch(e) {
            return false
        }
    }
}

let $store: any = localStorage.getItem('$store')
if ($store) {
    $store = isJSON($store) ? JSON.parse($store) : $store
}

const storage: any = {
    all: () => {
        return $store
    },
    get:  (key: string) => {
        // const value = localStorage.getItem(key);
        // if (value) {
        //     return isJSON(value) ? JSON.parse(value) : value
        // }
        return $store[key]
    },
    set: (key: string, value: any) => {
        $store[key] = value
        localStorage.setItem('$store', $store)
    },
    remove: (key: string) => {
        if ($store[key]) {
            delete $store[key]
        }
        localStorage.setItem('$store', $store)
    }
}

export default storage